package pandora.box.usuarionegocio;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import pandora.box.ramoatividade.RamoAtividade;
import pandora.box.usuarioempresa.UsuarioEmpresa;
import persistence.HibernateUtil;

public class UsuarioNegocioDAOImp implements UsuarioNegocioDAO {
	private Session 	session 	= null;
	private Transaction transaction = null;
	
	
	public void setSessao(Session session){
		this.session = session;
	}
	
	@Override
	public boolean inserirusuarionegocio(UsuarioNegocio usuarionegocio) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			
			UsuarioEmpresa usuarioempresa = new UsuarioEmpresa();
			usuarioempresa.setIdusuarioempresa(1);
			
			RamoAtividade ramoatividade = new RamoAtividade();
			ramoatividade.setIdramoatividade(1);
			
			this.session.persist(usuarionegocio);
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}
	
	@Override
	public boolean alterarusuarionegocio(UsuarioNegocio usuarionegocio) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();
			this.session.update(usuarionegocio);
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}
	
	@Override
	public boolean excluirusuarionegocio(UsuarioNegocio usuarionegocio) {
		boolean retorno = false;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			this.transaction = this.session.beginTransaction();			
			this.session.delete(this.session.get(UsuarioNegocio.class, usuarionegocio.getIdusuarionegocio()));
			this.transaction.commit();
			retorno = true;
		} catch (Exception e) {
			this.transaction.rollback();
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return retorno;
	}

	@Override
	public UsuarioNegocio listarUsuarioNegocio(UsuarioNegocio usuarionegocio) {
		UsuarioNegocio un = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			un = (UsuarioNegocio) this.session.get(UsuarioNegocio.class, usuarionegocio.getIdusuarionegocio());			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return un;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<UsuarioNegocio> listarTUsuarioNegocio() {
		List<UsuarioNegocio> list = null;
		try {
			this.session = HibernateUtil.getSessionFactory().openSession();
			list = this.session.createQuery("SELECT * FROM USUARIONEGOCIO;").list();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			this.session.close();
		}
		return list;
	}

}
